/**
 * 
 */
package inmobiliaria.frsf.bo.impl;

import inmobiliaria.frsf.bo.ColeccionesComunesBO;
import inmobiliaria.frsf.bo.PropietarioBO;
import inmobiliaria.frsf.dao.PropietarioDAO;
import inmobiliaria.frsf.dao.impl.PropietarioDAOImpl;
import inmobiliaria.frsf.model.Propietario;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Lucas
 * 
 */
public class PropietarioBOImpl implements PropietarioBO {

	private PropietarioDAO propietarioDAO = new PropietarioDAOImpl();

	private ColeccionesComunesBO coleccionesComunesBO = new ColeccionesComunesBOImpl();

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * inmobiliaria.frsf.bo.PropietarioBO#searchPropietario(java.lang.Integer)
	 */
	public List<Propietario> searchPropietario(Integer id, String nombre,
			String apellido, String numeroDocumento) throws Exception {
		Map<String, Object> datosConsulta = new HashMap<String, Object>();
		if (id != null)
			datosConsulta.put("id", id);

		if (nombre != null && !nombre.trim().equals(""))
			datosConsulta.put("nombre", nombre.trim());

		if (apellido != null && !apellido.trim().equals(""))
			datosConsulta.put("apellido", apellido.trim());

		if (numeroDocumento != null && !numeroDocumento.trim().equals(""))
			datosConsulta.put("numeroDocumento", numeroDocumento.trim());

		List<Propietario> propietarios = propietarioDAO
				.searchPropietario(datosConsulta);

		return propietarios;
	}

	public Propietario searchPropietarioById(Integer id) throws Exception {
		Map<String, Object> datosConsulta = new HashMap<String, Object>();
		datosConsulta.put("id", id);

		List<Propietario> propietarios = propietarioDAO
				.searchPropietario(datosConsulta);

		return propietarios.get(0);

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * inmobiliaria.frsf.bo.PropietarioBO#editar(inmobiliaria.frsf.model.Propietario
	 * )
	 */
	public void editar(Propietario propietario) throws Exception {
		coleccionesComunesBO.updateDomicilio(propietario.getDomicilio());
		propietarioDAO.editar(propietario);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see inmobiliaria.frsf.bo.PropietarioBO#eliminar(java.lang.Integer)
	 */
	public void eliminar(Long id) throws Exception {
		propietarioDAO.eliminar(id);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see inmobiliaria.frsf.bo.PropietarioBO#guardar(inmobiliaria.frsf.model.
	 * Propietario)
	 */
	public void guardar(Propietario propietario) throws Exception {
		Integer idDomicilio = coleccionesComunesBO.guardarDomicilio(propietario
				.getDomicilio());
		propietario.getDomicilio().setIdDomicilio(idDomicilio);
		propietarioDAO.guardar(propietario);
	}

	/**
	 * @return the propietarioDAO
	 */
	public PropietarioDAO getPropietarioDAO() {
		return propietarioDAO;
	}

	/**
	 * @param propietarioDAO
	 *            the propietarioDAO to set
	 */
	public void setPropietarioDAO(PropietarioDAO propietarioDAO) {
		this.propietarioDAO = propietarioDAO;
	}

	/**
	 * @return the coleccionesComunesBO
	 */
	public ColeccionesComunesBO getColeccionesComunesBO() {
		return coleccionesComunesBO;
	}

	/**
	 * @param coleccionesComunesBO
	 *            the coleccionesComunesBO to set
	 */
	public void setColeccionesComunesBO(
			ColeccionesComunesBO coleccionesComunesBO) {
		this.coleccionesComunesBO = coleccionesComunesBO;
	}

}
